
using System;
using System.Text;
using NuevoGenNHibernate.CEN.Ebay;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;
using NuevoGenNHibernate.EN.Ebay;
using NuevoGenNHibernate.Exceptions;

namespace NuevoGenNHibernate.CAD.Ebay
{
public partial class CompraloYACAD : BasicCAD, ICompraloYACAD
{
public CompraloYACAD() : base ()
{
}

public CompraloYACAD(ISession sessionAux) : base (sessionAux)
{
}



public CompraloYAEN ReadOIDDefault (int id_venta)
{
        CompraloYAEN compraloYAEN = null;

        try
        {
                SessionInitializeTransaction ();
                compraloYAEN = (CompraloYAEN)session.Get (typeof(CompraloYAEN), id_venta);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return compraloYAEN;
}


public int CrearCompraloYa (CompraloYAEN compraloYA)
{
        try
        {
                SessionInitializeTransaction ();
                if (compraloYA.Vendedor != null) {
                        compraloYA.Vendedor = (NuevoGenNHibernate.EN.Ebay.UsuarioEN)session.Load (typeof(NuevoGenNHibernate.EN.Ebay.UsuarioEN), compraloYA.Vendedor.Nick);

                        compraloYA.Vendedor.Ventas.Add (compraloYA);
                }
                if (compraloYA.Usuario != null) {
                        compraloYA.Usuario = (NuevoGenNHibernate.EN.Ebay.UsuarioEN)session.Load (typeof(NuevoGenNHibernate.EN.Ebay.UsuarioEN), compraloYA.Usuario.Nick);

                        compraloYA.Usuario.ListaSeguimiento.Add (compraloYA);
                }
                if (compraloYA.LineaVenta != null) {
                        foreach (NuevoGenNHibernate.EN.Ebay.LineaVentaEN item in compraloYA.LineaVenta) {
                                item.CompraloYA = compraloYA;
                                session.Save (item);
                        }
                }

                session.Save (compraloYA);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return compraloYA.Id_venta;
}

public void ModificarCompraloYa (CompraloYAEN compraloYA)
{
        try
        {
                SessionInitializeTransaction ();
                CompraloYAEN compraloYAEN = (CompraloYAEN)session.Load (typeof(CompraloYAEN), compraloYA.Id_venta);

                compraloYAEN.Finalizado = compraloYA.Finalizado;


                compraloYAEN.FormaDePago = compraloYA.FormaDePago;


                compraloYAEN.Fecha = compraloYA.Fecha;


                compraloYAEN.Nombre = compraloYA.Nombre;


                compraloYAEN.Descripcion = compraloYA.Descripcion;


                compraloYAEN.PrecioFinal = compraloYA.PrecioFinal;


                compraloYAEN.GastosEnvio = compraloYA.GastosEnvio;


                compraloYAEN.Stock = compraloYA.Stock;


                compraloYAEN.FechaFin = compraloYA.FechaFin;

                session.Update (compraloYAEN);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }
}
public void EliminarCompraloYa (int id_venta)
{
        try
        {
                SessionInitializeTransaction ();
                CompraloYAEN compraloYAEN = (CompraloYAEN)session.Load (typeof(CompraloYAEN), id_venta);
                session.Delete (compraloYAEN);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }
}

public CompraloYAEN ReadOID (int id_venta)
{
        CompraloYAEN compraloYAEN = null;

        try
        {
                SessionInitializeTransaction ();
                compraloYAEN = (CompraloYAEN)session.Get (typeof(CompraloYAEN), id_venta);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return compraloYAEN;
}

public System.Collections.Generic.IList<CompraloYAEN> ReadAll (int first, int size)
{
        System.Collections.Generic.IList<CompraloYAEN> result = null;
        try
        {
                SessionInitializeTransaction ();
                if (size > 0)
                        result = session.CreateCriteria (typeof(CompraloYAEN)).
                                 SetFirstResult (first).SetMaxResults (size).List<CompraloYAEN>();
                else
                        result = session.CreateCriteria (typeof(CompraloYAEN)).List<CompraloYAEN>();
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in CompraloYACAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return result;
}
}
}
